using System;

namespace DesktopWidgetApp.Shared
{
    /// <summary>
    /// 任务项模型
    /// </summary>
    public class TaskItem
    {
        /// <summary>
        /// 任务ID
        /// </summary>
        public Guid Id { get; set; }

        /// <summary>
        /// 标题
        /// </summary>
        public string Title { get; set; }

        /// <summary>
        /// 描述
        /// </summary>
        public string Description { get; set; }

        /// <summary>
        /// 创建者ID
        /// </summary>
        public Guid CreatedById { get; set; }

        /// <summary>
        /// 负责人ID
        /// </summary>
        public Guid? AssignedToId { get; set; }

        /// <summary>
        /// 进度状态
        /// </summary>
        public TaskStatus Status { get; set; }

        /// <summary>
        /// 优先级
        /// </summary>
        public Priority Priority { get; set; }

        /// <summary>
        /// 创建时间
        /// </summary>
        public DateTime CreatedTime { get; set; }

        /// <summary>
        /// 截止时间
        /// </summary>
        public DateTime? DueTime { get; set; }

        /// <summary>
        /// 完成时间
        /// </summary>
        public DateTime? CompletedTime { get; set; }

        /// <summary>
        /// 关联项目ID
        /// </summary>
        public Guid? ProjectId { get; set; }

        /// <summary>
        /// 标签
        /// </summary>
        public string[] Tags { get; set; }

        /// <summary>
        /// 备注
        /// </summary>
        public string Notes { get; set; }
    }

    /// <summary>
    /// 任务状态枚举
    /// </summary>
    public enum TaskStatus
    {
        /// <summary>
        /// 待办
        /// </summary>
        Todo,

        /// <summary>
        /// 进行中
        /// </summary>
        InProgress,

        /// <summary>
        /// 已完成
        /// </summary>
        Completed,

        /// <summary>
        /// 已暂停
        /// </summary>
        Paused,

        /// <summary>
        /// 已取消
        /// </summary>
        Cancelled
    }

    /// <summary>
    /// 优先级枚举
    /// </summary>
    public enum Priority
    {
        /// <summary>
        /// 低
        /// </summary>
        Low,

        /// <summary>
        /// 中
        /// </summary>
        Medium,

        /// <summary>
        /// 高
        /// </summary>
        High,

        /// <summary>
        /// 紧急
        /// </summary>
        Urgent
    }
}